// Shader中尽可能减少if else 的使用
void main() {
    // 相当于纹理坐标
    vec2 uv = gl_FragCoord.xy/iResolution.xy;

    vec3 col = vec3(1.0, 1.0, 1.0);
    
    // step(a,b)  a<b 时返回1

    /*
    float d = step( uv.x, 0.8 );
    float d1 = step( 0.2, uv.x );
    float d2 = step( uv.y, 0.8 );
    float d3 = step( 0.2, uv.y );

    col *= d * d1 * d2 * d3;
    */

    // 优化 画正方形  | x - 0.5 | 表示当前点与原点坐标的距离 如果小于0.3 返回1; 即画一个 0.3*iResolution 长度的正方形
    float d  = step(abs( uv.x - 0.5 ), 0.3) * step(abs( uv.y - 0.5 ), 0.3);
    col *= d;

    float midColor = smoothstep( 0.2, 0.7, uv.x );
    vec3 addColor1 = vec3(1.0, 0.0, 0.0);
    vec3 addColor2 = vec3(0.0, 0.0, 1.0);
    // mix(a,b,c) ->  return a*(1-c) + b*c
    col *= mix( addColor1, addColor2, midColor );

    gl_FragColor = vec4(col, 0.0);
}